package view.bieudoindex;

import java.sql.Timestamp;

import java.text.SimpleDateFormat;

import java.util.ArrayList;
import java.util.Date;

import java.util.HashMap;
import java.util.List;

import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.component.UISelectItems;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import javax.faces.event.PhaseEvent;
import javax.faces.event.ValueChangeEvent;

import javax.faces.model.SelectItem;

import oracle.adf.model.binding.DCIteratorBinding;
import oracle.adf.view.rich.component.UIXTable;
import oracle.adf.view.rich.component.rich.RichPopup;
import oracle.adf.view.rich.component.rich.input.RichInputDate;
import oracle.adf.view.rich.component.rich.input.RichInputText;
import oracle.adf.view.rich.component.rich.input.RichSelectOneChoice;
import oracle.adf.view.rich.component.rich.nav.RichCommandToolbarButton;
import oracle.adf.view.rich.component.rich.output.RichOutputText;
import oracle.adf.view.rich.context.AdfFacesContext;
import oracle.adf.view.rich.event.DialogEvent;
import oracle.adf.view.rich.event.PopupCanceledEvent;

import oracle.jbo.Row;
import oracle.jbo.RowSet;
import oracle.jbo.ViewCriteria;
import oracle.jbo.ViewCriteriaRow;
import oracle.jbo.ViewObject;
import oracle.jbo.domain.ClobDomain;
import oracle.jbo.domain.DBSequence;
import oracle.jbo.domain.Number;
import oracle.jbo.server.ViewRowImpl;
import oracle.jbo.uicli.binding.JUCtrlHierNodeBinding;

import oracle.jbo.uicli.binding.JUCtrlRangeBinding;

import org.apache.myfaces.trinidad.event.SelectionEvent;
import org.apache.myfaces.trinidad.model.RowKeySet;
import org.apache.myfaces.trinidad.model.RowKeySetImpl;

import view.common.Utils;

public class vnhastcindexBean {
    private RichPopup popupThemMoi;
    private RichPopup popupXem;
    private RichPopup popupDelete;
    private UIXTable tbl;
    private String Title;
    private String Chiso;
    private String ChisoKt;
    private static String Phiengiaodich;
    private String PhienGdSearch;
    private Date ngaygiaodich;
    private Date ngaygiaodichKt;
    private RichSelectOneChoice selectSanCk;
    private RichCommandToolbarButton firstPage =
        new RichCommandToolbarButton();
    private RichCommandToolbarButton prevPage = new RichCommandToolbarButton();
    private RichCommandToolbarButton nextPage = new RichCommandToolbarButton();
    private RichCommandToolbarButton lastPage = new RichCommandToolbarButton();
    private RichSelectOneChoice goToPage = new RichSelectOneChoice();
    private RichOutputText inputtextOperator;
    private RichInputText txtPhienGiaoDich = new RichInputText();
    private RichInputText txtChiso = new RichInputText();
    private RichInputText txtTongKLGD = new RichInputText();
    private RichInputText txtTongGTGD = new RichInputText();
    private RichInputText txtCung = new RichInputText();
    private RichInputText txtCau = new RichInputText();
    private RichInputText txtTongKLGDNDTTN = new RichInputText();
    private RichInputText txtTongKLGDNDTNN = new RichInputText();
    private RichSelectOneChoice txtSanId = new RichSelectOneChoice();
    private RichInputDate txtNgayGiaoDich = new RichInputDate();
    private Date OldValueNgaygiaodich;
    private Date NewValueNgaygiaodich;
    private Object OldValuePhienGD;
    private Object NewValuePhienGD;
    private String Ngaygiaodichhientai;
    private int pageNumber;
    private static final int RANGE_SIZE = 15;
    private static int operationType = 0;
    private String viewRender;

    public vnhastcindexBean() {
        JUCtrlRangeBinding VnIndexView = this.getVnIndexView();
        VnIndexView.getIteratorBinding().getNavigatableRowIterator().scrollRange(0);
    }

    public String getViewRender() {
        if (Boolean.FALSE.equals(Utils.getElExpression("#{adfFacesContext.postback}"))) {
            DCIteratorBinding hastcIterator =
                Utils.getIteratorBinding("VnHastcIndexView1Iterator");
            hastcIterator.getViewObject().getViewCriteriaManager().clearViewCriterias();
            hastcIterator.executeQuery();
        }
        return viewRender;
    }

    public void ResetSearch() {
        try {
            DCIteratorBinding iterDmCK =
                Utils.getIteratorBinding("VnHastcIndexView1Iterator");
            iterDmCK.getViewObject().getViewCriteriaManager().removeApplyViewCriteriaName("VnHastcIndexViewCriteriaSearch");
            iterDmCK.executeQuery();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public List<SelectItem> getDmSanCK() {
        List<SelectItem> lstDmsanck = new ArrayList<SelectItem>();
        try {
            DCIteratorBinding iterDmsanCK =
                Utils.getIteratorBinding("DmSanCkView1Iterator");
            for (Row row : iterDmsanCK.getAllRowsInRange()) {
                lstDmsanck.add(new SelectItem(row.getAttribute("Id").toString(),
                                              row.getAttribute("TenSan").toString()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return lstDmsanck;
    }

    public void searchGiaodichCK() {
        try {
            boolean Validate = true;
            if (getNgaygiaodich() != null && getNgaygiaodichKt() != null &&
                getNgaygiaodich().after(getNgaygiaodichKt())) {
                String meg = "Bạn phải nhập đến ngày lớn hơn từ ngày";
                Utils.showMessage(Utils.MSG_ERROR, meg);
            } else {
                if (getChiso() != null && Double.valueOf(Chiso) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Chỉ số phải là số nguyên dương.");
                }
                if (getChisoKt() != null && Double.valueOf(ChisoKt) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Chỉ số phải là số nguyên dương.");
                }
                if (getPhiengiaodich() != null &&
                    Double.valueOf(Phiengiaodich) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Phiên giao dịch phải là số nguyên dương.");
                }
                if (getChiso() != null && getChisoKt() != null &&
                    Double.valueOf(Chiso) > Double.valueOf(ChisoKt)) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Chỉ số đến phải lớn hơn hoặc bằng chỉ số bắt đầu.");
                }
                if (Validate) {
                    DCIteratorBinding VnHastcIterator =
                        Utils.getIteratorBinding("VnHastcIndexView1Iterator");
                    VnHastcIterator.clearForRecreate();
                    ViewObject vo = VnHastcIterator.getViewObject();
                    ViewCriteria vc =
                        vo.getViewCriteriaManager().getViewCriteria("VnHastcIndexViewCriteriaSearch");

                    vo.ensureVariableManager().setVariableValue("varIdsan",
                                                                selectSanCk.getValue());
                    vo.ensureVariableManager().setVariableValue("varNgaygiaodich",
                                                                getNgaygiaodich());
                    vo.ensureVariableManager().setVariableValue("varNgayGiaoDichKt",
                                                                getNgaygiaodichKt());
                    vo.ensureVariableManager().setVariableValue("varChiso",
                                                                getChiso());
                    vo.ensureVariableManager().setVariableValue("varChiSoKt",
                                                                getChisoKt());
                    vo.ensureVariableManager().setVariableValue("varPhiengiaodich",
                                                                PhienGdSearch);
                    vo.getViewCriteriaManager().removeApplyViewCriteriaName("VnHastcIndexViewCriteriaSearch");
                    vo.applyViewCriteria(vc);
                    vo.addQueryMode(ViewObject.QUERY_MODE_SCAN_DATABASE_TABLES);
                    vo.executeQuery();
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void create(ActionEvent actionEvent) {
        setPhiengiaodich("0");
        Utils.iteratorRefresh("VnHastcIndexView1Iterator");
        getNewPhiengiaodich();
        Utils.execute("CreateInsert");
        Utils.showPopup(popupThemMoi);
        operationType = 0;
        inputtextOperator.setValue("0");
    }

    private void getNewPhiengiaodich() {
        DCIteratorBinding hastcIterator =
            Utils.getIteratorBinding("VnHastcIndexCheckPGD1Iterator");

        DCIteratorBinding danhmucIterator =
            Utils.getIteratorBinding("DmSanCkView1Iterator");
        if (danhmucIterator.getCurrentRow() != null) {
            ViewObject vo = hastcIterator.getViewObject();
            ViewCriteria vc = vo.createViewCriteria();
            ViewCriteriaRow cr = vc.createViewCriteriaRow();
            String varStr =
                "=" + danhmucIterator.getCurrentRow().getAttribute("Id");
            cr.setAttribute("SanId", varStr);
            vc.addElement(cr);
            vo.getViewCriteriaManager().clearViewCriterias();
            vo.applyViewCriteria(vc);
            vo.executeQuery();
        }
        if (hastcIterator.getAllRowsInRange().length > 0) {
            int index = 0;
            for (int i = 0; i < hastcIterator.getAllRowsInRange().length;
                 i++) {
                int pgd =
                    Integer.valueOf(hastcIterator.getRowAtRangeIndex(i).getAttribute("PhienGiaoDich").toString());
                if (pgd > index) {
                    index = pgd;
                }
            }
            index = index + 1;
            setPhiengiaodich(String.valueOf(index));
        }
        //AdfFacesContext.getCurrentInstance().addPartialTarget(txtPhienGiaoDich);
    }

    public void update(ActionEvent actionEvent) {
        DCIteratorBinding IteratorVnIndex =
            Utils.getIteratorBinding("VnHastcIndexView1Iterator");
        DCIteratorBinding IteratorSanCk =
            Utils.getIteratorBinding("DmSanCkView1Iterator");
        if (Utils.getIteratorBinding("VnHastcIndexView1Iterator").getCurrentRow() ==
            null) {
            String meg = "Bạn chưa chọn phiên giao dịch nào.";
            Utils.showMessage(Utils.MSG_INFO, meg);
        } else {
            IteratorSanCk.setCurrentRowWithKeyValue(IteratorVnIndex.getCurrentRow().getAttribute("SanId").toString());
            setPhiengiaodich(IteratorVnIndex.getCurrentRow().getAttribute("PhienGiaoDich").toString());
            Utils.showPopup(popupThemMoi);
            operationType = 1;
            inputtextOperator.setValue("1");
        }
    }

    public void sanValueChanged(ValueChangeEvent valueChangeEvent) {
        Utils.setElExpression("#{bindings.DmSanCkView1.inputValue}",
                              valueChangeEvent.getNewValue());
        Utils.execute("RollBack");
        getNewPhiengiaodich();
    }

    public boolean checkExisted(String Id, String SanIdMoi, String SanIdCu,
                                String PhienGiaoDichMoi,
                                String PhienGiaoDichCu, Date NgayGiaoDichMoi,
                                Date NgayGiaoDichCu) {
        DCIteratorBinding IteratorVnIndex =
            Utils.getIteratorBinding("VnHNXIndexCheckExistView1Iterator");
        if (Id == "") {
            ViewObject vo2 = IteratorVnIndex.getViewObject();
            ViewCriteria vc2 = vo2.createViewCriteria();
            ViewCriteriaRow cr2 = vc2.createViewCriteriaRow();
            cr2.setAttribute("SanId", SanIdMoi);
            cr2.setAttribute("PhienGiaoDich", PhienGiaoDichMoi);
            cr2.setAttribute("NgayGiaoDich", NgayGiaoDichMoi);
            vc2.addElement(cr2);
            vo2.getViewCriteriaManager().clearViewCriterias();
            vo2.applyViewCriteria(vc2);
            vo2.setRangeSize(-1);
            vo2.executeQuery();
            if (vo2.getAllRowsInRange().length > 0) {
                String Messg =
                    "Phiên giao dịch và ngày giao dịch đã tồn tại trong sàn chứng khoán. Bạn phải nhập phiên giao dịch và ngày giao dịch khác";
                Utils.showMessage(Utils.MSG_ERROR, Messg);
                return true;
            }

            ViewObject vo = IteratorVnIndex.getViewObject();
            ViewCriteria vc = vo.createViewCriteria();
            ViewCriteriaRow cr = vc.createViewCriteriaRow();
            cr.setAttribute("SanId", SanIdMoi);
            cr.setAttribute("PhienGiaoDich", PhienGiaoDichMoi);
            vc.addElement(cr);
            vo.getViewCriteriaManager().clearViewCriterias();
            vo.applyViewCriteria(vc);
            vo.setRangeSize(-1);
            vo.executeQuery();
            if (vo.getAllRowsInRange().length > 0) {
                String Messg =
                    "Phiên giao dịch đã tồn tại trong sàn chứng khoán. Bạn phải nhập phiên giao dịch khác";
                Utils.showMessage(Utils.MSG_ERROR, Messg);
                return true;
            }

            ViewObject vo1 = IteratorVnIndex.getViewObject();
            ViewCriteria vc1 = vo1.createViewCriteria();
            ViewCriteriaRow cr1 = vc1.createViewCriteriaRow();
            cr1.setAttribute("SanId", SanIdMoi);
            cr1.setAttribute("NgayGiaoDich", NgayGiaoDichMoi);
            vc1.addElement(cr1);
            vo1.getViewCriteriaManager().clearViewCriterias();
            vo1.applyViewCriteria(vc1);
            vo1.setRangeSize(-1);
            vo1.executeQuery();
            if (vo1.getAllRowsInRange().length > 0) {
                String Messg =
                    "Ngày giao dịch đã tồn tại trong sàn chứng khoán. Bạn phải nhập ngày giao dịch khác";
                Utils.showMessage(Utils.MSG_ERROR, Messg);
                return true;
            }
        } else {
            ViewObject vo3 = IteratorVnIndex.getViewObject();
            ViewCriteria vc3 =
                vo3.getViewCriteriaManager().getViewCriteria("VnHNXIndexCheckExistViewCriteria");
            vo3.ensureVariableManager().setVariableValue("varCheckId", Id);
            vo3.ensureVariableManager().setVariableValue("varSanId", SanIdMoi);
            vo3.ensureVariableManager().setVariableValue("varPhienGiaoDich",
                                                         PhienGiaoDichMoi);
            vo3.ensureVariableManager().setVariableValue("varNgayGiaoDich",
                                                         NgayGiaoDichMoi);
            vo3.getViewCriteriaManager().removeViewCriteria("VnHNXIndexCheckExistViewCriteria");
            vo3.getViewCriteriaManager().applyViewCriteria(vc3);
            vo3.setRangeSize(-1);
            vo3.executeQuery();
            if (vo3.getAllRowsInRange().length > 0) {
                if (PhienGiaoDichCu != PhienGiaoDichMoi &&
                    NgayGiaoDichCu != NgayGiaoDichMoi) {
                    String Messg =
                        "Phiên giao dịch và ngày giao dịch đã tồn tại trong sàn chứng khoán. Bạn phải nhập phiên giao dịch và ngày giao dịch khác";
                    Utils.showMessage(Utils.MSG_ERROR, Messg);
                    return true;
                }
            }
            ViewObject vo4 = IteratorVnIndex.getViewObject();
            ViewCriteria vc4 = vo4.createViewCriteria();
            ViewCriteriaRow cr4 = vc4.createViewCriteriaRow();
            cr4.setAttribute("Id", "<>" + Id);
            cr4.setAttribute("SanId", SanIdMoi);
            cr4.setAttribute("PhienGiaoDich", PhienGiaoDichMoi);
            vc4.addElement(cr4);
            vo4.getViewCriteriaManager().clearViewCriterias();
            vo4.applyViewCriteria(vc4);
            vo4.setRangeSize(-1);
            vo4.executeQuery();
            if (vo4.getAllRowsInRange().length > 0) {
                if (PhienGiaoDichCu != PhienGiaoDichMoi) {
                    String Messg =
                        "Phiên giao dịch đã tồn tại trong sàn chứng khoán. Bạn phải nhập phiên giao dịch khác";
                    Utils.showMessage(Utils.MSG_ERROR, Messg);
                    return true;
                }
            }

            ViewObject vo5 = IteratorVnIndex.getViewObject();
            ViewCriteria vc5 = vo5.createViewCriteria();
            ViewCriteriaRow cr5 = vc5.createViewCriteriaRow();
            cr5.setAttribute("Id", "<>" + Id);
            cr5.setAttribute("SanId", SanIdMoi);
            cr5.setAttribute("NgayGiaoDich", NgayGiaoDichMoi);
            vc5.addElement(cr5);
            vo5.getViewCriteriaManager().clearViewCriterias();
            vo5.applyViewCriteria(vc5);
            vo5.setRangeSize(-1);
            vo5.executeQuery();
            if (vo5.getAllRowsInRange().length > 0) {
                String Messg =
                    "Ngày giao dịch đã tồn tại trong sàn chứng khoán. Bạn phải nhập ngày giao dịch khác";
                Utils.showMessage(Utils.MSG_ERROR, Messg);
                return true;
            }
            return false;
        }
        return false;
    }

    public void commitDialog(DialogEvent dialogEvent) {
        try {
            boolean Validate = true;
            int operator = inputtextOperator.getValue().equals("1") ? 1 : 0;
            DCIteratorBinding iterVnhastc =
                Utils.getIteratorBinding("VnHastcIndexView1Iterator");
            DCIteratorBinding IterratorSanCK =
                Utils.getIteratorBinding("DmSanCkView1Iterator");
            String Id = "";
            String SanIdMoi = "";
            String SanIdCu = "";
            Date NgayGiaoDichMoi = null;
            Date NgayGiaoDichCu = null;
            String PhienGiaoDichMoi = "";
            String PhienGiaoDichCu = "";
            if (txtSanId.getValue() != null) {
                SanIdMoi =
                        IterratorSanCK.getCurrentRow().getAttribute("Id").toString();
            }
            if (NewValueNgaygiaodich != null) {
                NgayGiaoDichMoi = NewValueNgaygiaodich;
            } else {
                if (txtNgayGiaoDich.getValue() != null) {
                    Object obj = txtNgayGiaoDich.getValue();
                    if (obj instanceof oracle.jbo.domain.Date) {
                        NgayGiaoDichMoi =
                                ((oracle.jbo.domain.Date)obj).dateValue();
                    } else if (obj instanceof Date) {
                        NgayGiaoDichMoi = (Date)obj;
                    } else if (obj instanceof String) {
                        SimpleDateFormat formatter =
                            new SimpleDateFormat("dd/MM/yyyy");
                        NgayGiaoDichMoi = formatter.parse(obj.toString());
                    }
                }
            }
            if (NewValuePhienGD != null) {
                PhienGiaoDichMoi = NewValuePhienGD.toString();
            } else {
                if (txtPhienGiaoDich.getValue() != null) {
                    PhienGiaoDichMoi = txtPhienGiaoDich.getValue().toString();
                }
            }
            if (operator == 0) {
                Id = "";
            } else {
                Id = iterVnhastc.getCurrentRow().getAttribute("Id").toString();
                SanIdCu =
                        iterVnhastc.getCurrentRow().getAttribute("SanId").toString();
                String ngaymacdinh =
                    iterVnhastc.getCurrentRow().getAttribute("NgayGiaoDich").toString();
                NgayGiaoDichCu = Utils.TimeStamp(ngaymacdinh);
                if (OldValuePhienGD != null) {
                    PhienGiaoDichCu = OldValuePhienGD.toString();
                } else {
                    PhienGiaoDichCu =
                            iterVnhastc.getCurrentRow().getAttribute("PhienGiaoDich").toString();
                }
            }
            if (checkExisted(Id, SanIdMoi, SanIdCu, PhienGiaoDichMoi,
                             PhienGiaoDichCu, NgayGiaoDichMoi,
                             NgayGiaoDichCu)) {

            } else {
                if (txtPhienGiaoDich.getValue() != null &&
                    Double.valueOf(txtPhienGiaoDich.getValue().toString()) <
                    0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Phiên giao dịch phải là số nguyên dương.");
                }
                if (txtChiso.getValue() != null &&
                    Double.valueOf(txtChiso.getValue().toString()) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Chỉ số phải là số nguyên dương.");
                }
                if (txtTongKLGD.getValue() != null &&
                    Double.valueOf(txtTongKLGD.getValue().toString()) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Tổng khối lượng giao dịch phải là số nguyên dương.");
                }
                if (txtTongGTGD.getValue() != null &&
                    Double.valueOf(txtTongGTGD.getValue().toString()) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Tổng giá trị giao dịch phải là số nguyên dương.");
                }
                if (txtCung.getValue() != null &&
                    Double.valueOf(txtCung.getValue().toString()) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Cung phải là số nguyên dương.");
                }
                if (txtCau.getValue() != null &&
                    Double.valueOf(txtCau.getValue().toString()) < 0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Cầu phải là số nguyên dương.");
                }
                if (txtTongKLGDNDTTN.getValue() != null &&
                    Double.valueOf(txtTongKLGDNDTTN.getValue().toString()) <
                    0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Tổng khối lượng giao dịch nhà đầu tư trong nước phải là số nguyên dương.");
                }
                if (txtTongKLGDNDTNN.getValue() != null &&
                    Double.valueOf(txtTongKLGDNDTNN.getValue().toString()) <
                    0) {
                    Validate = false;
                    Utils.showMessage(Utils.MSG_ERROR,
                                      "Tổng khối lượng giao dịch nhà đầu tư nước ngoài phải là số nguyên dương.");
                }
                if (Validate) {
                    String Idsan =
                        IterratorSanCK.getCurrentRow().getAttribute("Id").toString();
                    iterVnhastc.getCurrentRow().setAttribute("SanId", Idsan);
                    iterVnhastc.getCurrentRow().setAttribute("PhienGiaoDich",
                                                             Phiengiaodich);
                    iterVnhastc.getCurrentRow().setAttribute("NgayGiaoDich",
                                                             NgayGiaoDichMoi);

                    String rowKey = "";
                    if (iterVnhastc.getCurrentRow() != null) {
                        rowKey =
                                iterVnhastc.getCurrentRow().getKey().toStringFormat(false);
                    }
                    Utils.execute("Commit");
                    //Utils.iteratorRefresh("VnHastcIndexView1Iterator");
                    Utils.iteratorRefresh("DmSanCkView1Iterator");
                    iterVnhastc.setCurrentRowWithKey(rowKey);
                    if (operator == 0) {
                        ViewObject vo = iterVnhastc.getViewObject();
                        ViewCriteria vc =
                            vo.getViewCriteriaManager().getViewCriteria("VnHastcIndexViewCriteriaSearch");
                        vo.ensureVariableManager().setVariableValue("varIdsan",
                                                                    "");
                        vo.ensureVariableManager().setVariableValue("varNgaygiaodich",
                                                                    "");
                        vo.ensureVariableManager().setVariableValue("varNgayGiaoDichKt",
                                                                    "");
                        vo.ensureVariableManager().setVariableValue("varChiso",
                                                                    "");
                        vo.ensureVariableManager().setVariableValue("varChiSoKt",
                                                                    "");
                        vo.ensureVariableManager().setVariableValue("varPhiengiaodich",
                                                                    "");
                        vo.getViewCriteriaManager().removeViewCriteria("VnHastcIndexViewCriteriaSearch");
                        vo.getViewCriteriaManager().applyViewCriteria(vc);
                        iterVnhastc.executeQuery();
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        operationType = 0;
    }

    public void cancelDiaglog(PopupCanceledEvent popupCanceledEvent) {
        DCIteratorBinding iterVnhastc =
            Utils.getIteratorBinding("VnHastcIndexView1Iterator");
        String rowKey = "";
        if (iterVnhastc.getCurrentRow() != null) {
            rowKey =
                    iterVnhastc.getCurrentRow().getKey().toStringFormat(false);
        }
        Utils.execute("Rollback");
        Utils.iteratorRefresh("VnHastcIndexView1Iterator");
        //        DCIteratorBinding hastcIterator =
        //            Utils.getIteratorBinding("VnHastcIndexView1Iterator");
        //        hastcIterator.getViewObject().getViewCriteriaManager().clearViewCriterias();
        //        hastcIterator.executeQuery();
        iterVnhastc.setCurrentRowWithKey(rowKey);
        operationType = 0;
    }

    public void deleteDiaglog(DialogEvent dialogEvent) {
        try {
            if (Utils.getIteratorBinding("VnHastcIndexView1Iterator").getCurrentRow() ==
                null) {
                String meg = "Bạn chưa chọn phiên giao dịch nào.";
                Utils.showMessage(Utils.MSG_INFO, meg);
            } else {
                DCIteratorBinding iterVnIndex =
                    Utils.getIteratorBinding("VnHastcIndexView1Iterator");
                String VnIndexId =
                    iterVnIndex.getCurrentRow().getAttribute("Id").toString();
                ViewObject vo = iterVnIndex.getViewObject();
                vo.setAccessMode(RowSet.SCROLLABLE);
                iterVnIndex.setCurrentRowWithKeyValue(VnIndexId);
                Utils.execute("Delete");
                Utils.execute("Commit");
                vo.setAccessMode(RowSet.RANGE_PAGING);
            }
            operationType = 0;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void openPopupDelete(ActionEvent actionEvent) {
        if (Utils.getIteratorBinding("VnHastcIndexView1Iterator").getCurrentRow() ==
            null) {
            String messageText = "Không có phiên giao dịch nào.";
            Utils.showMessage(Utils.MSG_INFO, messageText);
        } else {
            Utils.showPopup(popupDelete);
        }
    }

    public void setPopupThemMoi(RichPopup popupThemMoi) {
        this.popupThemMoi = popupThemMoi;
    }

    public RichPopup getPopupThemMoi() {
        return popupThemMoi;
    }

    public void setTbl(UIXTable tbl) {
        this.tbl = tbl;
    }

    public UIXTable getTbl() {
        return tbl;
    }

    public Date getNgaygiaodich() {
        return ngaygiaodich;
    }

    public void setNgaygiaodich(Date ngaygiaodich) {
        this.ngaygiaodich = ngaygiaodich;
    }

    public void setFirstPage(RichCommandToolbarButton firstPage) {
        this.firstPage = firstPage;
    }

    public RichCommandToolbarButton getFirstPage() {
        return firstPage;
    }

    public void setPrevPage(RichCommandToolbarButton prevPage) {
        this.prevPage = prevPage;
    }

    public RichCommandToolbarButton getPrevPage() {
        return prevPage;
    }

    public void setNextPage(RichCommandToolbarButton nextPage) {
        this.nextPage = nextPage;
    }

    public RichCommandToolbarButton getNextPage() {
        return nextPage;
    }

    public void setLastPage(RichCommandToolbarButton lastPage) {
        this.lastPage = lastPage;
    }

    public RichCommandToolbarButton getLastPage() {
        return lastPage;
    }

    public void setGoToPage(RichSelectOneChoice goToPage) {
        this.goToPage = goToPage;
    }

    public RichSelectOneChoice getGoToPage() {
        return goToPage;
    }

    public void setInputtextOperator(RichOutputText inputtextOperator) {
        this.inputtextOperator = inputtextOperator;
    }

    public RichOutputText getInputtextOperator() {
        return inputtextOperator;
    }

    public void setChiso(String Chiso) {
        this.Chiso = Chiso;
    }

    public String getChiso() {
        return Chiso;
    }

    public void setPhiengiaodich(String Phiengiaodich) {
        this.Phiengiaodich = Phiengiaodich;
    }

    public String getPhiengiaodich() {
        return Phiengiaodich;
    }

    public void setPopupXem(RichPopup popupXem) {
        this.popupXem = popupXem;
    }

    public RichPopup getPopupXem() {
        return popupXem;
    }

    public void setTitle(String Title) {
        this.Title = Title;
    }

    public String getTitle() {
        Title = "Thêm mới chỉ số";
        int operator = inputtextOperator.getValue().equals("1") ? 1 : 0;
        if (operator == 0) {
            Title = "Thêm mới chỉ số chứng khoán";
        } else {
            Title = "Sửa chỉ số chứng khoán";
        }
        return Title;
    }

    public void setTxtPhienGiaoDich(RichInputText txtPhienGiaoDich) {
        this.txtPhienGiaoDich = txtPhienGiaoDich;
    }

    public RichInputText getTxtPhienGiaoDich() {
        return txtPhienGiaoDich;
    }

    public void setTxtNgayGiaoDich(RichInputDate txtNgayGiaoDich) {
        this.txtNgayGiaoDich = txtNgayGiaoDich;
    }

    public RichInputDate getTxtNgayGiaoDich() {
        return txtNgayGiaoDich;
    }

    public void setTxtSanId(RichSelectOneChoice txtSanId) {
        this.txtSanId = txtSanId;
    }

    public RichSelectOneChoice getTxtSanId() {
        return txtSanId;
    }

    public void setNgaygiaodichKt(Date ngaygiaodichKt) {
        this.ngaygiaodichKt = ngaygiaodichKt;
    }

    public Date getNgaygiaodichKt() {
        return ngaygiaodichKt;
    }

    public void setChisoKt(String ChisoKt) {
        this.ChisoKt = ChisoKt;
    }

    public String getChisoKt() {
        return ChisoKt;
    }

    public void setTxtChiso(RichInputText txtChiso) {
        this.txtChiso = txtChiso;
    }

    public RichInputText getTxtChiso() {
        return txtChiso;
    }

    public void setTxtTongKLGD(RichInputText txtTongKLGD) {
        this.txtTongKLGD = txtTongKLGD;
    }

    public RichInputText getTxtTongKLGD() {
        return txtTongKLGD;
    }

    public void setTxtTongGTGD(RichInputText txtTongGTGD) {
        this.txtTongGTGD = txtTongGTGD;
    }

    public RichInputText getTxtTongGTGD() {
        return txtTongGTGD;
    }

    public void setTxtCung(RichInputText txtCung) {
        this.txtCung = txtCung;
    }

    public RichInputText getTxtCung() {
        return txtCung;
    }

    public void setTxtCau(RichInputText txtCau) {
        this.txtCau = txtCau;
    }

    public RichInputText getTxtCau() {
        return txtCau;
    }

    public void setTxtTongKLGDNDTTN(RichInputText txtTongKLGDNDTTN) {
        this.txtTongKLGDNDTTN = txtTongKLGDNDTTN;
    }

    public RichInputText getTxtTongKLGDNDTTN() {
        return txtTongKLGDNDTTN;
    }

    public void setTxtTongKLGDNDTNN(RichInputText txtTongKLGDNDTNN) {
        this.txtTongKLGDNDTNN = txtTongKLGDNDTNN;
    }

    public RichInputText getTxtTongKLGDNDTNN() {
        return txtTongKLGDNDTNN;
    }

    public void setSelectSanCk(RichSelectOneChoice selectSanCk) {
        this.selectSanCk = selectSanCk;
    }

    public RichSelectOneChoice getSelectSanCk() {
        return selectSanCk;
    }

    public void setPopupDelete(RichPopup popupDelete) {
        this.popupDelete = popupDelete;
    }

    public RichPopup getPopupDelete() {
        return popupDelete;
    }

    public void PhiengiaodichValue(ValueChangeEvent valueChangeEvent) {
        OldValuePhienGD = valueChangeEvent.getOldValue();
        NewValuePhienGD = valueChangeEvent.getNewValue();
    }

    public void ValueNgaygiaodich(ValueChangeEvent valueChangeEvent) {
        if (valueChangeEvent.getNewValue() != null) {
            Object objNewngaygiaodich = valueChangeEvent.getNewValue();
            Object objOldngaygiaodich = valueChangeEvent.getOldValue();
            if (objNewngaygiaodich instanceof oracle.jbo.domain.Date) {
                NewValueNgaygiaodich =
                        ((oracle.jbo.domain.Date)objNewngaygiaodich).dateValue();
            } else if (objNewngaygiaodich instanceof Date) {
                NewValueNgaygiaodich = (Date)objNewngaygiaodich;
            } else if (objNewngaygiaodich instanceof String) {
                NewValueNgaygiaodich =
                        Utils.toTimeStamp(objNewngaygiaodich.toString());
            }

            if (objOldngaygiaodich instanceof oracle.jbo.domain.Date) {
                OldValueNgaygiaodich =
                        ((oracle.jbo.domain.Date)objOldngaygiaodich).dateValue();
            } else if (objOldngaygiaodich instanceof Date) {
                OldValueNgaygiaodich = (Date)objOldngaygiaodich;
            } else if (objOldngaygiaodich instanceof String) {
                OldValueNgaygiaodich =
                        Utils.toTimeStamp(objOldngaygiaodich.toString());
            }
        }
    }

    public void setPageNumber(int pageNumber) {
        JUCtrlRangeBinding PAKNView = this.getVnIndexView();
        if (pageNumber >
            Math.max(1, (PAKNView.getIteratorBinding().getEstimatedRowCount() -
                         1) / RANGE_SIZE + 1)) {
            pageNumber =
                    (int)Math.max(1, (PAKNView.getIteratorBinding().getEstimatedRowCount() -
                                      1) / RANGE_SIZE + 1);
        }
        this.pageNumber = pageNumber;
    }

    public int getPageNumber() {
        pageNumber =
                getVnIndexView().getIteratorBinding().getNavigatableRowIterator().getRangeStart() /
                RANGE_SIZE + 1;
        return pageNumber;
    }

    public static int getRANGE_SIZE() {
        return RANGE_SIZE;
    }

    public void rowSelected(SelectionEvent se) {
        Utils.rowSelected(se, "VnHastcIndexView1");
    }

    public String goToPage() {
        Utils.goToPage(RANGE_SIZE, pageNumber, "VnHastcIndexView1");
        return null;
    }

    public String goLastPage() {
        Utils.goLastPage(RANGE_SIZE, "VnHastcIndexView1");
        return null;
    }

    public boolean isLastEnabled() {
        return Utils.isLastEnabled(RANGE_SIZE, "VnHastcIndexView1");
    }

    public boolean isFirstEnabled() {
        return Utils.isFirstEnabled(RANGE_SIZE, "VnHastcIndexView1");
    }

    private JUCtrlRangeBinding getVnIndexView() {
        return Utils.getViewObject("VnHastcIndexView1");
    }

    public void setNgaygiaodichhientai(String Ngaygiaodichhientai) {
        this.Ngaygiaodichhientai = Ngaygiaodichhientai;
    }

    public String getNgaygiaodichhientai() {
        DCIteratorBinding IteratorIndex =
            Utils.getIteratorBinding("VnHastcIndexView1Iterator");
        if (IteratorIndex.getCurrentRow().getAttribute("NgayGiaoDich") !=
            null) {
            Object ngaygiaodichmacdinh =
                IteratorIndex.getCurrentRow().getAttribute("NgayGiaoDich");
            Ngaygiaodichhientai =
                    Utils.FormatDateByObject(ngaygiaodichmacdinh);
        } else {
            if (Utils.getCurrentDate().dateValue() != null) {
                Object ngayGDhientai = Utils.getCurrentDate().dateValue();
                Ngaygiaodichhientai =
                        Utils.getFormatDateByObject(ngayGDhientai);
            }
        }
        return Ngaygiaodichhientai;
    }

    public void setOldValueNgaygiaodich(Date OldValueNgaygiaodich) {
        this.OldValueNgaygiaodich = OldValueNgaygiaodich;
    }

    public Date getOldValueNgaygiaodich() {
        return OldValueNgaygiaodich;
    }

    public void setNewValueNgaygiaodich(Date NewValueNgaygiaodich) {
        this.NewValueNgaygiaodich = NewValueNgaygiaodich;
    }

    public Date getNewValueNgaygiaodich() {
        return NewValueNgaygiaodich;
    }

    public void setOldValuePhienGD(Object OldValuePhienGD) {
        this.OldValuePhienGD = OldValuePhienGD;
    }

    public Object getOldValuePhienGD() {
        return OldValuePhienGD;
    }

    public void setNewValuePhienGD(Object NewValuePhienGD) {
        this.NewValuePhienGD = NewValuePhienGD;
    }

    public Object getNewValuePhienGD() {
        return NewValuePhienGD;
    }

    public static void setOperationType(int operationType) {
        vnhastcindexBean.operationType = operationType;
    }

    public static int getOperationType() {
        return operationType;
    }

    public void setPhienGdSearch(String PhienGdSearch) {
        this.PhienGdSearch = PhienGdSearch;
    }

    public String getPhienGdSearch() {
        return PhienGdSearch;
    }
}
